﻿namespace DCHealthCheck.DomainModel {

    #region Usings
    using DCHealthCheck.Common;
    using System;
    using System.Collections.Generic;
    using System.Text; 
    #endregion

    public interface ISystemInfo {

        int CDriveFreeMB { get; set; }
        int CDriveTotalMB { get; set; }
        DateTime CheckDateTimeUTC { get; set; }
        DateTime CheckDateUTC { get; set; }
        int CPUCount { get; set; }
        DCFlags DCFlags { get; set; }
        DateTime DCTime { get; set; }
        DateTime DCTimeUTC { get; set; }
        string DNSListenAddresses { get; set; }
        string DNSPublishAddresses { get; set; }
        long DNSQueryReceived { get; set; }
        long DNSRecursiveQueries { get; set; }
        string DNSResponse { get; set; }
        long DNSResponseSent { get; set; }
        int DNSScavengingInterval { get; set; }
        bool DST { get; set; }
        string ErrorMessage { get; set; }
        StringBuilder ErrorMessageBuilder { get; set; }
        int FreeMemoryMB { get; set; }
        long HighestCommittedUSN { get; set; }
        Guid Id { get; set; }
        string IPAddress { get; set; }
        string IPAddresses { get; set; }
        bool IsGlobalCatalog { get; set; }
        bool IsInfrastructureManager { get; set; }
        bool IsPDCEmulator { get; set; }
        bool IsRIDManager { get; set; }
        bool IsISTG { get; set; }
        int LogicalCPUCount { get; set; }
        string Manufacturer { get; set; }
        string Model { get; set; }
        int NeighborCount { get; set; }
        int NTDSDitSizeMB { get; set; }
        DateTime OSInstallDate { get; set; }
        int PendingReplicationCount { get; set; }
        int PingLossPct { get; set; }
        int PingRttMs { get; set; }
        int ProcessCount { get; set; }
        int RepInMB { get; set; }
        int RepOutMB { get; set; }
        string SerialNumber { get; set; }
        DateTime StartupDateTimeUTC { get; set; }
        SysvolMigrationState SysvolMigrationState { get; set; }
        SysvolReplicationType SysvolReplicationType { get; set; }
        int TcpConnections { get; set; }
        string TimeDiff { get; set; }
        int TotalHandles { get; set; }
        int TotalLogons { get; set; }
        int TotalMemoryMB { get; set; }
        int TotalThreads { get; set; }
        int UptimeDays { get; set; }
        int UTCOffset { get; set; }
        byte[] GpRsopHtml { get; set; }
        byte[] GpRsopXml { get; set; }

        #region TestResult properties
        TestResult DNSTest { get; set; }
        TestResult GCBindTest { get; set; }
        TestResult GCSSLBindTest { get; set; }
        TestResult LdapBindTest { get; set; }
        TestResult LdapSSLBindTest { get; set; }
        TestResult PingTest { get; set; }
        TestResult StrictReplicationTest { get; set; }
        TestResult SysvolTest { get; set; }
        TestResult TimeServerTest { get; set; }
        TestResult TimeSyncTest { get; set; } 
        #endregion

        #region Related Entities
        HealthCheckSummary HealthCheckSummary { get; set; }
        DomainController DomainController { get; set; }
        GroupPolicySysvolInfo GroupPolicySysvolInfo { get; set; }
        TimeSyncInfo TimeSyncInfo { get; set; }

        ICollection<InstalledProduct> InstalledProducts { get; set; }
        ICollection<PendingReplication> PendingReplications { get; set; }
        ICollection<NetstatInfo> NetstatInfos { get; set; }
        ICollection<ProcessInfo> ProcessInfos { get; set; }
        ICollection<ReplicationNeighbor> ReplicationNeighbors { get; set; }
        ICollection<ServiceInfo> ServiceInfos { get; set; }
        ICollection<TagObjectValue> TagObjectValues { get; set; } 
        #endregion

    }
}
